/*
 * Model.hpp
 *
 *  Created on: Jan 12, 2014
 *      Author: knuke
 */

#ifndef MODEL_HPP_
#define MODEL_HPP_

#include <GMath/GMath.hpp>
#include <vector>

namespace gengine
{
  class Mesh;
  class Material;
  class Node;

  class Model
  {
  public:
    Model();
    virtual ~Model() throw ();

    const Node* getRootNode() const;
    void setRootNode(Node* rootNode);

    void addMesh(Mesh* mesh);
    void addMaterial(Material* material);
    const Material* getMaterial(uint index);

  private:
    gmath::Mat4f model_matrix_;
    Node* root_node_;
    std::vector<Mesh*> meshes_;
    std::vector<Material*> materials_;
  };

} /* namespace gengine */

#endif
